package com.ppt.android.base.utils;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;


/**
 * Intent跳转工具类
 *
 * @Description 用于简化页面跳转搞得重复代码
 * @author jws
 */
public class IntentUtil {

	/**
	 * 普通的方式打开一个Activiy
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        需要打开的Activity
	 */
	public static void gotoActivity(Context context, Class<?> gotoClass) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		context.startActivity(intent);
	}

	/**
	 * 打开一个Activity并关闭当前页面
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        需要打开的Activity
	 */
	public static void gotoActivityToTopAndFinish(Context context, Class<?> gotoClass) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		context.startActivity(intent);
		((Activity) context).finish();
	}

	/**
	 * 用单例模式打开一个Activity并关闭当前页面，可携带数据
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        需要跳转的页面
	 * @param bundle
	 *        携带的数据
	 */
	public static void gotoActivityToTopAndFinish(Context context, Class<?> gotoClass, Bundle bundle) {
		Intent intent = new Intent();
		intent.putExtras(bundle);
		intent.setClass(context, gotoClass);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		context.startActivity(intent);
		((Activity) context).finish();
	}

	/**
	 * 普通的方式打开一个activity，并携带数据
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        需要打开的Activity
	 * @param bundle
	 *        携带的数据
	 */
	public static void gotoActivity(Context context, Class<?> gotoClass, Bundle bundle) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		intent.putExtras(bundle);
		context.startActivity(intent);
	}

	/**
	 * 用Result的方式跳转到指定页面，不携带数据
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        要跳转的Activity
	 * @param requestCode
	 *        页面跳转请求码
	 */
	public static void gotoActivityForResult(Context context, Class<?> gotoClass, int requestCode) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		((Activity) context).startActivityForResult(intent, requestCode);
	}

	/**
	 * 用Result的形式跳转到指定页面，并携带数据
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        要跳转的页面
	 * @param bundle
	 *        携带的数据
	 * @param requestCode
	 *        跳转搞到页面的请求码
	 */
	public static void gotoActivityForResult(Context context, Class<?> gotoClass, Bundle bundle, int requestCode) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		intent.putExtras(bundle);
		((Activity) context).startActivityForResult(intent, requestCode);
	}

	/**
	 * 跳转至指定activity,并关闭当前activity.
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        需要跳转的Activity界面
	 */
	public static void gotoActivityAndFinish(Context context, Class<?> gotoClass) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		context.startActivity(intent);
		((Activity) context).finish();
	}

	/**
	 * 携带传递数据跳转至指定activity,并关闭当前activity.
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        需要跳转的页面
	 * @param bundle
	 *        附带数据
	 */
	public static void gotoActivityAndFinish(Context context, Class<?> gotoClass, Bundle bundle) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		intent.putExtras(bundle);
		context.startActivity(intent);
		((Activity) context).finish();
	}

	/**
	 * 跳转至指定activity,不关闭当前页面
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        需要跳转的界面Activity
	 */
	public static void gotoActivityToTop(Context context, Class<?> gotoClass) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		context.startActivity(intent);
	}

	/**
	 * 携带传递数据跳转至指定activity,不关闭当前activity.
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param gotoClass
	 *        跳转的activity
	 * @param bundle
	 *        附带的数据
	 */
	public static void gotoActivityToTop(Context context, Class<?> gotoClass, Bundle bundle) {
		Intent intent = new Intent();
		intent.setClass(context, gotoClass);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		intent.putExtras(bundle);
		context.startActivity(intent);
	}

	/**
	 * 跳转到发送短信界面
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param context
	 *        上下文
	 * @param phoneNum
	 *        手机号码
	 * @param content
	 *        短信内容
	 */
	public static void gotoSendMsmActivity(Context context, String phoneNum, String content) {
		Uri uri = Uri.parse("smsto:" + phoneNum);
		Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
		intent.putExtra("sms_body", content);
		context.startActivity(intent);
	}

	/**
	 * 关闭某个activity
	 *
	 * @version 1.0
	 * @updateInfo (此处输入修改内容,若无修改可不写.)
	 *
	 * @param activity
	 *        需要关闭的activity对象
	 */
	public static void finish(Activity activity) {
		activity.finish();
	}

	/**
	 * 拨打电话
	 * @param activity
	 * @param string
     */
	public static void callPhone(Activity activity, String string) {
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_DIAL);
		intent.setAction(Intent.ACTION_CALL);
		intent.setData(Uri.parse("tel://" + string));
		activity.startActivity(intent);
	}
}
